package demo4;

/**
 * 子数组系列
 *      环绕字符串中唯一的子字符串
 */
public class test8 {
    public int findSubstringInWraproundString(String ss) {
        // 创建dp表
        int n = ss.length();
        char[] s = ss.toCharArray();
        int[] dp = new int[n];
        // 初始化
        for (int i = 0; i < n; i++) {
            dp[i] = 1;
        }
        for (int i = 1; i < n; i++) {
            if (s[i] == s[i-1] +1 || s[i-1] == 'z' && s[i]=='a') {
                dp[i] += dp[i-1];
            }
        }
        int[] hash = new int[26];
        for (int i = 0; i < n; i++) {
            hash[s[i] - 'a'] = Math.max(hash[s[i] - 'a'], dp[i]);
        }
        int sum =0;
        for (int x : hash) {
            sum += x;
        }
        return sum;
    }
}
